<?php #Модуль работы с файлами
class file extends Load_use
{
//Список поддиректорий и файлов с фильтром
	function getDir()
	{
		$path=$this->getParam('path',false);
		if($path && is_dir($path))
		{
			$target_dir = opendir( $path );
			$cont=array('files'=>array(),'dirs'=>array());
			$extensions=$this->getParam('extensions',false);
			while($file=readdir($target_dir))//Список файлов текущей директории 
				if($file!="." && $file!="..")//Исключаю ссылку на родительскую и текущую директорию
				{
					if(is_dir("$path/$file"))
						$cont['dirs'][]=$file;
					elseif(!$extensions || preg_match('#\.('.implode('|',$extensions).')$#',$file))
					{
						$cont['files'][]=$file;
					}
				}
			closedir($target_dir); 
			return $cont;
		}
		$this->add_log("Отсутствует папка назаначения $path",DEE_ERROR);
		return false;
	}
//Удалить папку
	function removeDir()
	{
		$dir=$this->getParam('path',false);
		if($dir && is_dir($dir))
		{
			$nDir = opendir( $dir ); 
			while ( $file = readdir( $nDir ) )//Список файлов текущей директории 
				if ( $file != "." && $file != ".." )
				{
					$fPath="$dir/$file";
					if(is_dir($fPath))
					{
						if(!removeDir($fPath))
							return false;
					}
					else
						if(!unlink($fPath))
							return false;
				}
			if(!rmdir($dir))
				return false;
			closedir( $nDir ); 
		}
		else
		{
			
			$this->add_log('Ошибка при удалении папки',DEE_ERROR);
			return false;
		}
		$this->add_log('Удаление папки успешно произведено',DEE_NOTICE);
		return true;
	}
//Дублировать папку
	function copyDir()
	{
		$source=$this->getParam('source',false);
		$target=$this->getParam('target',false);
		if(!$target || !$source)
		{
			$this->add_log("Отсутствует один из параметров копирования папки",DEE_ERROR);
			return false;
		}
		$chmod=$this->getParam('chmod',0774);
		if($this->_copyDir($target,$source,$chmod))		
			$this->add_log('Копирование произведено успешно',DEE_NOTICE);
	}
	private function _copyDir($target,$source,$chmod)
	{	
		if(!is_dir($source))
		{
			$this->add_log("Отсутствует папка '$source'",DEE_ERROR);
			return false;
		}			
		if( !is_dir($target) && !mkdir($target,$chmod))
		{			
			$this->add_log("Ошибка при копировании папки '$target'",DEE_ERROR);
			return false;
		}
		$nDir = opendir( $source ); 
		while ( $file = readdir( $nDir ) )//Список файлов текущей директории 
			if ( $file != "." && $file != ".." )
			{
				$fPath="$source/$file";
				$tPath="$target/$file";
				if(is_dir($fPath))
				{
					if(!(is_dir($tPath) || mkdir($tPath, $chmod)) && !$this->_copyDir($fPath,$tPath,$chmod))
						return false;
				}
				else
					if(!copy($fPath,$tPath))
						return false;
			}
		closedir( $nDir ); 
		return true;
	}

}